package com.hwl.eduservice.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hwl.eduservice.pojo.Course;
import com.hwl.eduservice.pojo.frontVo.WebCourseQueryVo;
import com.hwl.eduservice.pojo.frontVo.WebCourseVo;
import com.hwl.eduservice.pojo.vo.CourseInfoForm;
import com.hwl.eduservice.pojo.vo.CoursePublishVo;
import com.hwl.eduservice.pojo.vo.CourseQueryVo;
import com.hwl.eduservice.pojo.vo.CourseVo;
import com.hwl.servicebase.dto.CourseDto;

import java.util.List;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author long
 * @since 2021-09-21
 */
public interface CourseService extends IService<Course> {

    /**
     * 添加课程
     *
     * @return 课程id
     */
    String addCourseInfo(CourseInfoForm courseInfoForm);

    /**
     * 根据课程id获取课程信息
     */
    CourseInfoForm getCourseInfo(String courseId);

    /**
     * 更新课程信息
     */
    boolean updateCourseInfo(CourseInfoForm courseInfoForm);

    /**
     * 分页条件查询课程列表
     */
    IPage<CourseVo> selectPage(Long page, Long limit, CourseQueryVo courseQueryVo);

    /**
     * 删除课程封面
     */
    boolean removeCoverById(String id);

    /**
     * 删除课程信息
     */
    boolean removeCourseById(String id);

    /**
     * 获取课程的发布信息
     */
    CoursePublishVo getCoursePublishVoById(String id);

    /**
     * 前台课程列表展示
     */
    List<Course> webSelectList(WebCourseQueryVo webCourseQueryVo);

    /**
     * 前台获取课程信息并更新浏览量
     *
     * @param courseId 课程id
     * @return webCourseVo
     */
    WebCourseVo selectCourseById(String courseId);

    /**
     * 根据课程id查询课程信息
     */
    CourseDto getCourseDtoById(String courseId);

    /**
     * 增加课程销量
     */
    void updateBuyCountById(String id);
}
